<?php
class Cliente extends AppModel 
{
	var $name = 'Cliente';
  var $hasMany = array
  (
  	'Clientepersona' => array
  		(
  			'className' => 'Clientepersona',
				'conditions' => '',
				'order'    => '',
				'limit'    => '',
				'foreignKey' => 'clientes_id',
				'dependent' => false,
				'exclusive' => false,
				'finderQuery' => '',
				'fields'     => '',
				'offset'     => '',
				'counterQuery' => ''
			),
  	'Prestacion' => array
  		(
  			'className' => 'Prestacion',
				'conditions' => '',
				'order'    => '',
				'limit'    => '',
				'foreignKey' => 'clientes_id',
				'dependent' => false,
				'exclusive' => false,
				'finderQuery' => '',
				'fields'     => '',
				'offset'     => '',
				'counterQuery' => ''
			),			
  	'Contrato' => array
  		(
  			'className' => 'Contrato',
				'conditions' => '',
				'order'    => '',
				'limit'    => '',
				'foreignKey' => 'clientes_id',
				'dependent' => false,
				'exclusive' => false,
				'finderQuery' => '',
				'fields'     => '',
				'offset'     => '',
				'counterQuery' => ''
			)
//   	'Cuenta' => array
//   		(
//   			'className' => 'Cuenta',
// 				'conditions' => '',
// 				'order'    => '',
// 				'limit'    => '',
// 				'foreignKey' => 'clientes_id',
// 				'dependent' => false,
// 				'exclusive' => false,
// 				'finderQuery' => '',
// 				'fields'     => '',
// 				'offset'     => '',
// 				'counterQuery' => ''
// 			)
	);
	
//validaciones de los campos	
/*	var $validate = array
	(	
		'codigo' => '/^[0-9\.\-\_\s]{0,40}$/i',
		'nombre' => '/^[a-zA-Z0-9\W\.\-\_\s]{4,50}$/i',
		'condicion_iva' => '/^[a-zA-Z\s]{4,20}$/i',
		'cuit' => '/^[0-9]{2,2}\-[0-9]{8,8}\-[0-9]{1,1}$/i',
		'direccion' => '/^[0-9a-zA-Z\W\.\-\_\s]{4,50}$/i',
		'localidad_id' => '/^[0-9a-zA-Z\W\.\-\_\s]{4,10}$/i',
		'telefono_1' => '/^[0-9\s\-\(\)]{0,20}$/i',
		'celular' => '/^[0-9\s\-\(\)]{0,20}$/i',
		'interno' => '/^[a-zA-Z0-9\s\-\(\)]{0,10}$/i',
		'fax' => '/^[0-9\s\-\(\)]{0,10}$/i',
		'mail' => VALID_EMAIL, 
		'pagina_web' => '/^[0-9a-zA-Z\.]{0,50}$/i'
 		'contrato_duracion' => '/^[0-9]$/i'
	);*/
	

//en este arreglo van todas los campos que son uniques	
	var $unique = array 
	(
		'nombre' //,
		//'cuit'
	);
	
	
/*function beforeValidate ()
{
	$ret=true;
	if(($this->data[$this->name]['condicion_iva']) == 'consumidor final') {
		$this->data[$this->name]['cuit']='99-99999999-9';
	}
	if (($this->data[$this->name]['condicion_iva']) == '')
	{
		//$this->invalidate('cuit');
		$ret=false;
	}

	
	return $ret;

}*/
	
//funcion que valida antes de una funcion save
//si retorna true guarda sin problemas , si retorna false no guarda	
function validates()
{
//-------------------------------------------------------------------------------------

// Recorre el arreglo 15-32165487-7  	$unique y consulta en la base de datos si existe un registro con 
// con el campo $unique[] igual al data que se le pasa por parametro
// Es decir, retorna false si se intenta agregar un registro en donde el campo $unique[] ya 
// esta agregardo

	foreach($this->unique as $campoUnique)
	{	
		//$this->name = 'Cliente'
		if (!empty($this->data[$this->name]))//entra si data no esta vacio
		{
			$valor = $this->data[$this->name][$campoUnique]; //valor del campo a encontrar
			//consultamos en la base de datos el registro
			$registro = $this->findAll(array($campoUnique => $valor));
			
			//resultado del registro
			//$registro['0'][$this->name][$campoUnique]  --> valor encontrado en la DB
			//si no es vacio significa que encontro uno y hay que invalidar el campo
			if (!empty($registro['0'][$this->name][$campoUnique]))
			{
				$valorIdDB = $registro['0'][$this->name]['id']; //id del registro encontrado
				//si no esta seteado coloca -1, esto es porque cuando se agrega el indice id no existe
				if(empty($this->data[$this->name]['id']))
					$this->data[$this->name]['id']='-1';
				$valorIdData = $this->data[$this->name]['id'];  //id del data
				if($valorIdDB != $valorIdData)
					$this->invalidate($campoUnique);//ejecuta tagErrorMsg('Empresa/usuario')
				else
					return true;
			}
		}
	}
//-------------------------------------------------------------------------------------	
		$errors = $this->invalidFields();//devuelve los campos invalidos
		//$this->requestAction("/clientes/agregar/$errors");//le pasamos los errores al controlador
		return count($errors) == 0;	//si retorna true => guarda, sino no guarda
}
}
?>